.TH "ECPG" "1" "2003-11-02" "Application" "PostgreSQL Client Applications"
.SH NAME
ecpg \- 嵌入的 SQL C 预处理器

.SH SYNOPSIS
.sp
\fBecpg\fR\fR [ \fR\fB\fIoption\fB\fR...\fB \fR\fR]\fR\fR \fIfile\fR...\fR\fR
.SH "DESCRIPTION 描述"
.PP
\fBecpg\fR 是一个嵌入的用于C 语言的 SQL 预编译器。 它把嵌有 SQL 语句的 C 程序通过将 SQL 调用替换成特殊的函数调用的方法转换成普通的 C 代码。 然后输出的文件就可以用任何 C 编译工具进行处理。
.PP
\fBclusterdb\fR 将把命令行上给出的每个输入文件转换成对应的 C 输出文件。 输入文件最好有 .pgc 的扩展名， 这样，这个扩展将被替换成 .c 来决定输出文件名。 如果输入文件的扩展不是 .pgc，那么输出文件名将通过在全文件名后面附加 .c 来生成。 输出文件名也可以用 -o 选项覆盖。
.PP
 本手册页并不描述嵌入的 SQL 语句，参阅 Chapter 29 获更多信息。
.SH "OPTIONS 选项"
.PP
\fBclusterdb\fR 接受下列命令行参数：
.TP
\fB-c\fR
 为 SQL 代码自动生成某种 C 代码。目前，这个选项可以用于 EXEC SQL TYPE。
.TP
\fB-C \fR\fImode\fR
 设置一个兼容模式。mode 可以是 INFORMIX 或者 INFORMIX_SE。
.TP
\fB-D \fR\fIsymbol\fR
 定义一个 C 预编译器符号。
.TP
\fB-i\fR
 同时也分析系统包含文件。
.TP
\fB-I \fIinclude-path\fB\fR
 声明一个附加的包含路径。用于寻找通过 EXEC SQL INCLUDE 包含的文件。缺省是 .（当前目录）， /usr/local/include， 在编译时定义的PostgreSQL 包含路径（缺省： /usr/local/pgsql/include）和 /usr/include。顺序如上。
.TP
\fB-o \fIfilename\fR
 声明ecpg应该把它的所有输出写到给出的 filename里。
.TP
\fB-t\fR
 打开自动提交模式。在这种模式象，每个查询都自动提交， 除非它是包围在一个明确的事务块中。在缺省模式下， 命令只是在发出 EXEC SQL COMMIT 的时候提交。
.TP
\fB-v\fR
 打印额外的信息，包括版本和包含路径。
.TP
\fB--help\fR
 显示一个命令用法的简单摘要，然后退出。
.TP
\fB--version\fR
 显示版本信息，然后退出。
.SH "NOTES 注意"
 在编译预处理的 C 代码文件的时候，编译器需要能够找到 PostgreSQL 包含目录里面的 ECPG 头文件。因此，我们在调用编译器的时候可能需要使用 -I  （比如，-I/usr/local/pgsql/include）。
 使用了嵌入 SQL 的 C 代码必须和 libecpg 库链接，比如，使用这样的链接选项： -L/usr/local/pgsql/lib -lecpg
 这些目录的实际值可以通过 \fIpg_config\fP(1) 找到。
.SH "EXAMPLES 例子"
.PP
 如果你有一个叫 prog1.pgc 的嵌入 SQL 的 C 源代码，你可以用下面的命令序列创建一个可执行程序：
.sp
.nf
ecpg prog1.pgc
cc -I/usr/local/pgsql/include -c prog1.c
cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
.sp
.fi

.SH "译者"
.B Postgresql 中文网站
.B 何伟平 <laser@pgsqldb.org>
